# 最大数字
# 2025/5/23

"""
我们有 n 个连续的整数 1, 2, 3, · · · , n，可以自由排列它们的顺序。
然后，我们把这些数字转换成二进制表示，按照排列顺序拼接形成一个新的二进制数。
我们的目标是让这个二进制数的值最大，并输出这个二进制对应的十进制表示。

输入:
3
输出:
30
说明:
1 的二进制为 1 ；2 的二进制为 10 ；3 的二进制为 11 ；其组成的最大的二 进制数字为 11110 ，对应的十进制数字为 30 。
"""
from functools import cmp_to_key


def max_num(n):
    str_list = []

    def compare(a: str, b: str):
        if a + b > b + a:
            return -1
        else:
            return 1

    for i in range(1, n + 1):
        binstr = str(bin(i))[2:]
        str_list.append(binstr)
    print(str_list)
    str_list.sort(key=cmp_to_key(compare))

    ans = "".join(str_list)

    return int(ans, 2)


if __name__ == '__main__':
    n = int(input())
    print(max_num(n))
